package com.peng.leetcode.list;

import java.util.HashSet;
import java.util.Set;

/**
 * DetectCycle
 * 给定一个链表，返回链表开始入环的第一个节点。 如果链表无环，则返回 null。
 *
 * 为了表示给定链表中的环，我们使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。 如果 pos 是 -1，则在该链表中没有环。注意，pos 仅仅是用于标识环的情况，并不会作为参数传递到函数中。
 *
 * 链接：https://leetcode-cn.com/problems/linked-list-cycle-ii
 *
 * @author: lupeng6
 * @create: 2020/12/31 15:41
 */
public class DetectCycle {


    public static void main(String[] args) {

    }

    public ListNode detectCycle(ListNode head) {
        if (head == null) {
            return null;
        }
        Set<ListNode> set = new HashSet<>(100);
        ListNode current = head;
        while (current != null) {
            if (set.contains(current)) {
                return current;
            }
            set.add(current);
            current = current.next;
        }
        return null;
    }


}
